lets_plot.geom_density¶
-
lets_plot.geom_density(mapping=None, *, data=None, stat=None, position=None, show_legend=None, sampling=None, tooltips=None, kernel=None, adjust=None, bw=None, n=None, fs_max=None, **other_args)¶ Displays kernel density estimate, which is a smoothed version of the histogram.
- Parameters
mapping (FeatureSpec) – Set of aesthetic mappings created by aes() function. Aesthetic mappings describe the way that variables in the data are mapped to plot “aesthetics”.
data (dict or DataFrame) – The data to be displayed in this layer. If None, the default, the data is inherited from the plot data as specified in the call to ggplot.
stat (str, default=’density’) – The statistical transformation to use on the data for this layer, as a string. Supported transformations: ‘identity’ (leaves the data unchanged), ‘count’ (counts number of points with same x-axis coordinate), ‘bin’ (counts number of points with x-axis coordinate in the same bin), ‘smooth’ (performs smoothing - linear default), ‘density’ (computes and draws kernel density estimate).
position (str or FeatureSpec) – Position adjustment, either as a string (‘identity’, ‘stack’, ‘dodge’, …), or the result of a call to a position adjustment function.
show_legend (bool, default=True) – False - do not show legend for this layer.
sampling (FeatureSpec) – Result of the call to the sampling_xxx() function. Value None (or ‘none’) will disable sampling for this layer.
tooltips (layer_tooltips) – Result of the call to the layer_tooltips() function. Specifies appearance, style and content.
kernel (str, default=’gaussian’) – The kernel we use to calculate the density function. Choose among ‘gaussian’, ‘cosine’, ‘optcosine’, ‘rectangular’ (or ‘uniform’), ‘triangular’, ‘biweight’ (or ‘quartic’), ‘epanechikov’ (or ‘parabolic’).
bw (str or float) – The method (or exact value) of bandwidth. Either a string (choose among ‘nrd0’ and ‘nrd’), or a float.
adjust (float) – Adjust the value of bandwidth my multiplying it. Changes how smooth the frequency curve is.
n (int, default=512) – The number of sampled points for plotting the function.
fs_max (int, default=500) – Maximum size of data to use density computation with ‘full scan’. For bigger data, less accurate but more efficient density computation is applied.
other_args – Other arguments passed on to the layer. These are often aesthetics settings used to set an aesthetic to a fixed value, like color=’red’, fill=’blue’, size=3 or shape=21. They may also be parameters to the paired geom/stat.
- Returns
Geom object specification.
- Return type
LayerSpec
Note
Computed variables:
..density.. : density estimate (mapped by default).
..count.. : density * number of points.
..scaled.. : density estimate, scaled to maximum of 1.
geom_density() understands the following aesthetics mappings:
x : x-axis coordinates.
alpha : transparency level of a layer. Understands numbers between 0 and 1.
color (colour) : color of a geometry lines. Can be continuous or discrete. For continuous value this will be a color gradient between two colors.
fill : color of geometry filling.
size : lines width. Defines line width.
linetype : type of the line. Codes and names: 0 = ‘blank’, 1 = ‘solid’, 2 = ‘dashed’, 3 = ‘dotted’, 4 = ‘dotdash’, 5 = ‘longdash’, 6 = ‘twodash’.
weight : used by ‘density’ stat to compute weighted density.
Examples
1 2 3 4 5 6
import numpy as np from lets_plot import * LetsPlot.setup_html() np.random.seed(42) x = np.random.normal(size=1000) ggplot({'x': x}, aes(x='x')) + geom_density()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import numpy as np from lets_plot import * LetsPlot.setup_html() n = 300 np.random.seed(42) x = np.random.normal(size=n) c = np.random.choice(['a', 'b', 'c'], size=n) ggplot({'x': x, 'c': c}, aes(x='x')) + \ geom_density(aes(group='c', color='c', fill='c'), alpha=.2, \ tooltips=layer_tooltips().format('..density..', '.3f')\ .line('density|@..density..')\ .format('..count..', '.1f')\ .line('count|@..count..')\ .format('..scaled..', '.2f')\ .line('scaled|@..scaled..'))
1 2 3 4 5 6 7 8 9 10 11 12 13
import numpy as np from lets_plot import * LetsPlot.setup_html() np.random.seed(42) x = np.random.normal(size=1000) p = ggplot({'x': x}, aes(x='x')) bunch = GGBunch() for i, bw in enumerate([.1, .2, .4]): for j, n in enumerate([16, 64, 256]): bunch.add_plot(p + geom_density(kernel='epanechikov', bw=bw, n=n) + \ ggtitle('bw={0}, n={1}'.format(bw, n)), j * 300, i * 200, 300, 200) bunch.show()
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import numpy as np from lets_plot import * LetsPlot.setup_html() np.random.seed(42) x = np.random.normal(size=1000) y = np.sign(x) p = ggplot({'x': x, 'y': y}, aes(x='x')) bunch = GGBunch() for i, adjust in [(i, .5 * (1 + i)) for i in range(3)]: bunch.add_plot(p + geom_density(aes(weight='y'), kernel='cosine', \ adjust=adjust) + \ ggtitle('adjust={0}'.format(adjust)), i * 300, 0, 300, 200) bunch.show()